﻿// available_version.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

// AvailableVersion.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;

vector<int> parseVersion(string& version)
{
    vector<int> result;
    istringstream ss(version);
    string part;
    while (getline(ss, part, '.'))
    {
        result.push_back(stoi(part));
    }
    return result;
}

int compareVersion(vector<int>v1, vector<int>v2)
{
    int maxsize = max(v1.size(), v2.size());
    vector<int>v1resize = v1;
    vector<int>v2resize = v2;
    v1resize.resize(maxsize, 0);
    v2resize.resize(maxsize, 0);

    for (int i = 0; i < maxsize; i++)
    {
        if (v1resize[i] > v2resize[i]) return 1;
        else if (v1resize[i] < v2resize[i]) return -1;
    }
    return 0;

}

int countAvailableVersion(string& v1, string& v2)
{
    vector<int> v1_vec = parseVersion(v1);
    vector<int> v2_vec = parseVersion(v2);
    if (compareVersion(v1_vec, v2_vec) >= 0) return 0;

    int maxsize = max(v1.size(), v2.size());
    vector<int>v1resize = v1_vec;
    vector<int>v2resize = v2_vec;
    v1resize.resize(maxsize, 0);
    v2resize.resize(maxsize, 0);

    int diff_index = -1;
    for (int i = 0; i < maxsize; i++)
    {
        if (v1resize[i] != v2resize[i])
        {
            diff_index = i;
            break;
        }
    }
    if (diff_index == -1) return 0;

    for (int i = diff_index + 1; i < maxsize; i++)
    {
        if (v1resize[i] != 0 || v2resize[i] != 0) return 0;
    }

    return v2_vec[diff_index] - v1_vec[diff_index] - 1;

}

void solve()
{
    string input;
    getline(cin, input);
    int split_pos = input.find(",");
    string v1 = input.substr(0, split_pos);
    string v2 = input.substr(split_pos + 1);
    cout << countAvailableVersion(v1, v2);
}

int main()
{
    solve();
    /*string version1 = "1.2";
    string version2 = "1.3";
    vector<int> version_vec1 = parseVersion(version1);
    vector<int> version_vec2 = parseVersion(version2);
    int result = compareVersion(version_vec1, version_vec2);
    cout << to_string(result);*/
    /*
    for (int i = 0; i < version_vec.size(); i++)
    {
        cout << version_vec[i];
    }*/
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
